package jmu.cultural_tourism.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;

@Service
public class AttractionService {

    private final DoubaoApiService doubaoApiService;

    @Autowired
    public AttractionService(DoubaoApiService doubaoApiService) {
        this.doubaoApiService = doubaoApiService;
    }

    public Map<String, Double> getCurrentLocation() {
        Random random = new Random();
        double latitude = 30 + random.nextDouble() * 10;
        double longitude = 110 + random.nextDouble() * 20;

        Map<String, Double> location = new HashMap<>();
        location.put("latitude", latitude);
        location.put("longitude", longitude);
        return location;
    }

    /**
     * 根据经纬度获取
     * @param latitude
     * @param longitude
     * @return
     */
    @Cacheable(value = "attractionCache", key = "#latitude.toString() + ',' + #longitude.toString()")
    public String generateAttractionIntroduction(double latitude, double longitude) {
        String prompt = String.format(
                "纬度%.6f，经度%.6f附近50公里内的景点，按距离由近到远排序，每个景点包含：" +
                        "1.名称 2.核心特色（不超过20字）3.直线距离。" +
                        "最后请提供一条合理的1日游旅游路径建议（包含交通方式）。用分点列出，不要额外说明。",
                latitude, longitude
        );
        return doubaoApiService.chatWithDoubao(prompt);
    }

    /**
     * 输入城市获取
     * @param city
     * @return
     */
    @Cacheable(value = "cityAttractionCache", key = "#city")
    public String generateAttractionByCity(String city) {
        String prompt = String.format(
                "%s市内及周边50公里内的热门景点，推荐5个，每个包含：" +
                        "1.名称 2.核心特色（不超过20字）3.大概位置。" +
                        "最后请设计一条2日游的旅游路径，包含每天的行程安排、交通方式和时间建议。用分点列出，不要额外说明。",
                city
        );
        return doubaoApiService.chatWithDoubao(prompt);
    }
}
